package in.rob.client.page.base;
import in.lib.Constants;
import in.lib.adapter.PrivateMessageAdapter;
import in.lib.event.DeletePrivateMessageEvent;
import in.lib.event.NewPrivateMessageEvent;
import in.model.PrivateMessage;
import in.model.SimpleUser;
import in.model.base.NetObject;
import java.util.ArrayList;
import java.util.List;
import android.os.Bundle;
import com.squareup.otto.Subscribe;
public abstract class MessageStreamFragment extends StreamFragment
{
@Override public void onDataReady()
{
}
@Override public void retrieveArguments(Bundle arguments)
{
}
@Override public void setupAdapters()
{
if (getAdapter() == null)
{
setAdapter(new PrivateMessageAdapter(getContext(), new ArrayList<PrivateMessage>()));
}
else
{
setAdapter(getAdapter());
}
}
/**
* Loops through posts and builds a list of users and tags to use in auto suggest
*/
public synchronized void extractUsersAndTags(List<NetObject> items)
{
List<SimpleUser> users = getCacheManager().readFileAsObject(Constants.CACHE_USERNAMES, new ArrayList<SimpleUser>());
List<String> usersStr = getCacheManager().readFileAsObject(Constants.CACHE_USERNAMES_STR, new ArrayList<String>());
List<NetObject> tags = getCacheManager().readFileAsObject(Constants.CACHE_HASHTAGS, new ArrayList<NetObject>());
List<String> tagsStr = getCacheManager().readFileAsObject(Constants.CACHE_HASHTAGS_STR, new ArrayList<String>());
if (items != null)
{
for (NetObject o : items)
{
PrivateMessage p = (PrivateMessage)o;
if (!usersStr.contains(p.getPoster().getId()))
{
users.add(SimpleUser.parseFromUser(p.getPoster()));
usersStr.add(p.getPoster().getId());
}
for (String s : p.getHashTags())
{
if (!tagsStr.contains("#" + s))
{
NetObject tag = new NetObject();
tag.setFilterTag("#" + s);
tags.add(tag);
tagsStr.add("#" + s);
}
}
}
}
getCacheManager().asyncWriteFile(Constants.CACHE_USERNAMES, users);
getCacheManager().asyncWriteFile(Constants.CACHE_HASHTAGS, tags);
getCacheManager().asyncWriteFile(Constants.CACHE_USERNAMES_STR, usersStr);
getCacheManager().asyncWriteFile(Constants.CACHE_HASHTAGS_STR, tagsStr);
users.clear();
tags.clear();
tagsStr.clear();
usersStr.clear();
}
/**************************************************
*
* OTTO EVENTS
*
**************************************************/
/**
* Called when a private messsage is recieved from a broadcast.
*
* Override this to change the default behavour.
* Default: prepend adapter with message
*
* <b>You must override this method and call super() in order for
* these events to be registered in your class</b>
*
* @param p The message recieved
*/
@Subscribe public void onMessageRecieved(NewPrivateMessageEvent p)
{
if (p.getMessage() != null)
{
prependItem(p.getMessage());
}
}
/**
* Called when a private message is deleted from a broadcast.
*
* Override this to change the default behavour.
* Default: delete message from adapter
*
* <b>You must override this method and call super() in order for
* these events to be registered in your class</b>
*
* @param p The message recieved
*/
@Subscribe public void onMessageDeleted(DeletePrivateMessageEvent p)
{
if (p.getMessage() != null)
{
deleteItem(p.getMessage());
}
}
}